<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>
    // var obj = {
    //     name:"Admin"
    // }
    // console.log(obj)
    // var obj2 = obj;
    // var obj100 = obj;
    // console.log(obj === obj2)
    // console.log(obj100=== obj)


    function Fn(){
        if(!Fn.obj){
            Fn.obj = {};
            Fn.obj.__proto__ = Fn.prototype;
        }
        Fn.obj.abc = "hahaha";
        return Fn.obj;
    }
    Fn.prototype.show = function(){
        console.log(12312)
    }
    var f1 = new Fn();
    var f2 = new Fn();
    console.log(f1);
    console.log(f2);
    f1.show();
    console.log(f1 === f2);  // true

    // 手动模拟 new 的原理，实现单例模式
        // 1. 创建新对象
        // 2. 改变了原函数的this指向新对象
        // 3. 改变新对象的__proto__指向原函数的prototype
        // 4. 检测原函数是否主动返回对象，如果没有，返回这个新对象


</script>
</html>